// 引入用于生成token的包
const jwt = require('jsonwebtoken')
// 引入解析token的包
const { expressjwt: expressJWT } = require('express-jwt')

// 需要提前准备好秘钥
const secret_key = 'tedu'

// 生成token
// obj 用于生成token的对象
// time token有效时间
const setToken = (obj,time='300s') => {
  return jwt.sign(obj,secret_key,{expiresIn: time})
}
// 验证token，作为一个中间件使用
const verify = () => {
  // 解析token
  // 使用提前准备好的秘钥，是一个公钥
  // 使用了同一组公钥
  // 排除某些页面不要进行解析token
  return expressJWT({secret: secret_key, algorithms: ['HS256']}).unless({
    path: ['/user/login',/^\/upload/]
  })
}


// 暴露出去
module.exports = {
  setToken,
  verify
}